package net.chery.update.tool;

import cn.hutool.core.codec.Base64;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import cn.hutool.crypto.SecureUtil;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.client.support.BasicAuthenticationInterceptor;
import org.springframework.util.StringUtils;
import org.springframework.web.client.RestTemplate;

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;

public class TestRest {
    private static final RestTemplate restTemplate = new RestTemplate();
    private static final HttpHeaders jsonHeaders = new HttpHeaders();
    private static final Logger logger = LoggerFactory.getLogger(TestRest.class);

    public static final String url = "https://nevdcsy.mychery.com/bitnei/v1.0/battery/vehicle/receiveBatteryProduce";
    public static final String token = "EsZoV2eHUjzxTHuifZjGdRNjyJKjPhvr";
    public static final String key = "14DISB+L0DcOLtFA";

    static {
        jsonHeaders.setContentType(MediaType.APPLICATION_JSON);
        jsonHeaders.set("Authorization",String.format("Bearer %s",token));
    }

    public static void sendJson(String json) {
        String enStr = encrypt(json);
        HttpEntity<String> entity = new HttpEntity<>(
                String.format("{\"requestMsg\": \"%s\",\"sign\": \"%s\",\"timestamp\": %s}",
                        enStr,
                        SecureUtil.hmacMd5(key.getBytes(StandardCharsets.UTF_8)).digestHex(enStr),
                        System.currentTimeMillis()),
                jsonHeaders);
        String response = restTemplate.postForObject(url, entity, String.class);
        if(response!=null){
            JSONObject ar= JSONUtil.parseObj(response);
            if(ar.getInt("code")==0){
                logger.info(decrypt(ar.getStr("data")));
            } else {
                logger.warn(ar.getStr("msg"));
            }
        } else {
            logger.warn("response is null");
        }
    }

    public static String encrypt(String content) {
        try {
            if (!StringUtils.hasLength(content)) {
                return "";
            }
            KeyGenerator kgen = KeyGenerator.getInstance("AES");
            SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");
            secureRandom.setSeed(key.getBytes(StandardCharsets.UTF_8));
            kgen.init(128, secureRandom);
            SecretKey secretKey = kgen.generateKey();
            byte[] enCodeFormat = secretKey.getEncoded();
            SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES");
            Cipher cipher = Cipher.getInstance("AES");
            byte[] byteContent = content.getBytes(StandardCharsets.UTF_8);
            cipher.init(1, key);
            byte[] result = cipher.doFinal(byteContent);
            return Base64.encode(result);
        } catch (Exception e) {
            logger.warn("encrypt error:",e);
        }
        return null;
    }

    public static void main(String[] args) {
//        String s="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";
//        String d=decrypt(s,"6OYkPVHIXQmIvSO8");
//        System.out.println(d);
        RestTemplate r=new RestTemplate();
        r.getInterceptors().add(new BasicAuthenticationInterceptor("cluster","cluster"));
        String x=r.getForObject("http://127.0.0.1:8080/kettle/executeTrans/?trans=D:\\Servers\\PDI\\menu_service.ktr&id=22",
                String.class);
        System.out.println(x);
    }

    /***
     * @param str :解密内容
     */
    public static String decrypt(String str) {
        return decrypt(str,key);
    }
    public static String decrypt(String str,String password) {
        try {
            byte[] content = Base64.decode(str);
            KeyGenerator kgen = KeyGenerator.getInstance("AES");
            SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");
            secureRandom.setSeed(password.getBytes(StandardCharsets.UTF_8));
            kgen.init(128, secureRandom);
            SecretKey secretKey = kgen.generateKey();
            byte[] enCodeFormat = secretKey.getEncoded();
            SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES");
            Cipher cipher = Cipher.getInstance("AES");
            cipher.init(2, key);
            byte[] result = cipher.doFinal(content);
            return new String(result, StandardCharsets.UTF_8);
        } catch (Exception e) {
            logger.error(e.getMessage(), e);
        }
        return "";
    }
}